home *** CD-ROM | disk | FTP | other *** search
- // Macros
-
- // Transformer une coordonnée 3D flottante en une coordonnée entière fenêtre 2D
- #define XDM_to2D(fa, fmin, wmin, fcoef) ((wmin) + /* (int)*/ (((fa) - (fmin)) * (fcoef)))
-
- // Transformer une coordonnée entière fenêtre 2D en une coordonnée 3D flottante
- #define XDM_to3D(ia, fmin, wmin, fcoef) ((fmin) + ((ia) - (wmin)) / (fcoef))
-
- // Arrondir une coordonnée sur la grille
- #define XDM_toGrid(fA) (((float) ((int) ((fA) / fGridSize))) * fGridSize)
-
- // Dessiner un bouton et mémoriser le rectangle dans lequel il est inscrit
- #ifndef _AMIGA_
- #define XDM_Bouton(bouton, x, y) \
- { \
- BitBlt(pWT -> hdcDBuf, (x), (y), XDC_G_LARG, XDC_G_HAUT, gBouton.Gad -> hdc, 0, 0, SRCCOPY); \
- bouton.rect.left = (x); \
- bouton.rect.top = (y); \
- bouton.rect.right = (x) + XDC_G_LARG; \
- bouton.rect.bottom = (y) + XDC_G_HAUT; \
- }
- #else
- // DrawIconState(hWnd -> RPort, bouton.Gad -> hIcon, NULL, x, y, IDS_NORMAL, ICONDRAWA_Borderless, TRUE, TAG_DONE); n'existe pas en PPC
- #define XDM_Bouton(bouton, x, y) \
- { \
- DrawImage(hWnd -> RPort, (struct Image *) (bouton.Gad -> hIcon -> do_Gadget.GadgetRender), x, y); \
- bouton.rect.left = x; \
- bouton.rect.top = y; \
- bouton.rect.right = x + XDC_G_LARG; \
- bouton.rect.bottom = y + XDC_G_HAUT; \
- }
- #endif
-
- // Vérifier si un point est dans le rectangle associé à un gadget
- #define XDM_BoutonClic(GID, Point) PtInRect(&pWT -> Widgets[(GID)].rect, (Point))
-
- // Swapper les octets d'un long (les fichiers sont d'origine Amiga 68K)
- #ifndef _AMIGA_
- #define swapl(x) \
- ((((unsigned long) (x) & 0xFF000000) >> 24) | \
- (((unsigned long) (x) & 0x00FF0000) >> 8) | \
- (((unsigned long) (x) & 0x0000FF00) << 8) | \
- (((unsigned long) (x) & 0x000000FF) << 24))
- #else
- #define swapl(x) (x)
- #endif
-
- #define CL_BLUE(lBGR) (((((lBGR) >> 16) & 0x000000FFL) << 24) | 0x00FFFFFFL)
- #define CL_GREEN(lBGR) (((((lBGR) >> 8) & 0x000000FFL) << 24) | 0x00FFFFFFL)
- #define CL_RED(lBGR) (((((lBGR)) & 0x000000FFL) << 24) | 0x00FFFFFFL)
-
- #define CreatePen(a, b, lBGR) \
- ObtainBestPen(hInst -> ViewPort.ColorMap, \
- CL_RED(lBGR), CL_GREEN(lBGR), CL_BLUE(lBGR), \
- OBP_Precision, PRECISION_IMAGE, \
- OBP_FailIfBad, FALSE)
-
- #define SetPen(hWnd, lBGR) SetAPen(hWnd -> RPort, MakePen(lBGR))
-
- #define PeekSignal(s) (bTracking && hApp -> tc_SigRecvd & (s))
-
- #define WL_BLUE(lBGR) ((((lBGR) >> 16) & 0x000000FFL) / 256.)
- #define WL_GREEN(lBGR) ((((lBGR) >> 8) & 0x000000FFL) / 256.)
- #define WL_RED(lBGR) ((((lBGR)) & 0x000000FFL) / 256.)
-
- #define WSetPen(__C, __CL) \
- { sC.r = WL_RED(__CL); \
- sC.g = WL_GREEN(__CL); \
- sC.b = WL_BLUE(__CL); \
- W3D_SetCurrentColor(__C, &sC); \
- }
-
- #define WDraw(__C, __X, __Y, __Z, __T) \
- { \
- sL.v1.x = (__X) + fLeftEdge; \
- sL.v1.y = (__Y) + fTopEdge; \
- sL.v2.x = (__Z) + fLeftEdge; \
- sL.v2.y = (__T) + fTopEdge; \
- W3D_DrawLine(__C, &sL); \
- }
-
- #define WPixel(__C, __X, __Y) \
- { \
- sP.v1.x = (__X) + fLeftEdge; \
- sP.v1.y = (__Y) + fTopEdge; \
- W3D_DrawPoint(__C, &sP); \
- }
-
- #define WRectFill(__C, __X, __Y, __Z, __T) \
- { \
- sV[0].x = sV[3].x = (__X) + fLeftEdge; \
- sV[0].y = sV[1].y = (__Y) + fTopEdge; \
- sV[1].x = sV[2].x = (__Z) + 1. + fLeftEdge; \
- sV[2].y = sV[3].y = (__T) + 1. + fTopEdge; \
- W3D_DrawTriFan(__C, &sTs); \
- }
-
- #define WTriEdge(__C, __X, __Y, __Z, __T, __U, __V) \
- { \
- sV[0].x = sV[3].x = (__X) + fLeftEdge; \
- sV[0].y = sV[3].y = (__Y) + fTopEdge; \
- sV[1].x = (__Z) + fLeftEdge; \
- sV[1].y = (__T) + fTopEdge; \
- sV[2].x = (__U) + fLeftEdge; \
- sV[2].y = (__V) + fTopEdge; \
- W3D_DrawLineStrip(__C, &sLs); \
- }
-
-